<?php

class Usuari_Model extends MySQL_Driver {
    public $mail;
    public $nom;
    public $password;
    public $primercognom;
    public $segoncognom;
    public $datanaixement;
    public $imatge_perfil;
    
    public $events_usuari;
    
    # Constructor d'usuari'events
    function __construct($mail, $password) {
        $this->get($mail, $password);
    }
    
    public function getMail() {
        return $this->mail;
    }
    
    public function setMail($mail) {
        $this->mail = $mail;
    }
    
    public function getNom() {
        return $this->nom;
    }
    
    public function setNom($nom) {
        $this->nom = $nom;
    }
    
    public function getPassword() {
        return $this->password;
    }
    
    public function setPassword($password) {
        $this->password = $password;
    }
    
    public function getPrimercognom() {
        return $this->primercognom;
    }
    
    public function setPrimercognom($primercognom) {
        $this->primercognom = $primercognom;
    }
    
    public function getSegoncognom() {
        return $this->segoncognom;
    }
    
    public function setSegoncognom($segoncognom) {
        $this->segoncognom = $segoncognom;
    }
    
    public function getDatanaixement() {       
        return $this->datanaixement;
    }
    
    public function setDatanaixement($datanaixement) {
        $originalDate = $datanaixement;
        $newDate = date("Y-m-d", strtotime($originalDate));
        $this->datanaixement = $newDate;
    }

    public function setImatgePerfil($imatge_perfil) {
        $this->imatge_perfil = $imatge_perfil;
    }

    public function getImatgePerfil() {
        return $this->imatge_perfil;
    }
    
    public function getEventUsuari($posicio) {
        return $this->events_usuari[$posicio];
    }
    
    public function setEventUsuari($event, $posicio) {
        $this->events_usuari[$posicio] = $event;
    }
    
    # Agafar un objecte "Event_model" desat en el array "$events_usuari" a partir del seu ID
    public function getEventUsuariID($id) {
        $event = null;
        for($i = 0; $i<count($this->events_usuari); $i++) {
            if($this->events_usuari[$i]->getId() == $id) $event = $this->events_usuari[$i];
        }
        return $event;
    }
    
    # Agafar un objecte "Event_model" desat en el array "$events_usuari" a partir de la seva posició
    public function getEventUsuariPosicio($id) {
        $posicio = null;
        for($i = 0; $i<count($this->events_usuari); $i++) {
            if($this->events_usuari[$i]->getId() == $id) {
                $posicio = $i;
            }
        }
        return $posicio;
    }
    
    # Eliminar un event de l'array "$events_usuari"
    public function deleteEventUsuari($id) {
        unset($this->events_usuari[$this->getEventUsuariPosicio($id)]);
        $this->events_usuari = array_values($this->events_usuari);
        
    }
    
    public function toString() {
        return $this->getMail()."***".$this->getNom()."***".$this->getPrimercognom()."***".$this->getSegoncognom()."***".$this->getDatanaixement()."***".$this->getImatgePerfil()."***";
    }
    
    # Agafar les dades del usuari de la BBDD
    public function get($user_email, $password) {
         if($user_email != "") {
            $this->query =
                    "
                    SELECT  mail, password, nom, primercognom, segoncognom, datanaixement, imatgeperfil
                    FROM    usuari
                    WHERE   mail = '$user_email'
                    AND     password = '".md5($password)."'
                    ";
            
            $this->get_results_from_query();
            
            if(count($this->rows) == 1) {
                $this->setMail($this->rows[0]["mail"]);
                $this->setPassword($this->rows[0]["password"]);
                $this->setNom($this->rows[0]["nom"]);
                $this->setPrimercognom($this->rows[0]["primercognom"]);
                $this->setSegoncognom($this->rows[0]["segoncognom"]);
                $this->setDatanaixement($this->rows[0]["datanaixement"]);
                $this->setImatgePerfil($this->rows[0]["imatgeperfil"]);
                //print $this->toString();
                
                unset($this->rows);
            }
            else {
                //print $password." / ".md5($password);
                $this->setMail($user_email);
                $this->setPassword($password);

                unset($this->rows);
            }
            
            # Recoger todos los eventos del usuario
            $this->getEventsUser($this->mail);
        }
    }
    
    # Insercció d'usuari a la BBDD
    public function set($nom, $primercognom, $segoncognom, $datanaixement) {
        $this->setNom($nom);
        $this->setPrimercognom($primercognom);
        $this->setSegoncognom($segoncognom);
        $this->setDatanaixement($datanaixement);
        
        $this->query =
            "
            INSERT INTO usuari(mail, password, nom, primercognom, segoncognom, datanaixement)
            VALUES('".$this->getMail()."', '".md5($this->getPassword())."', '".$this->getNom()."', '".$this->getPrimercognom()."','".$this->getSegoncognom()."', '".$this->getDatanaixement()."')
            ";
        $this->execute_single_query();
    }
    
    # Actualització de dades del usuari a la BBDD
    public function update($nom, $primercognom, $segoncognom, $password, $datanaixement) {
       // $this->setPassword(md5($password));
        $this->setNom($nom);
        $this->setPrimercognom($primercognom);
        $this->setSegoncognom($segoncognom);
        $this->setDatanaixement($datanaixement);
        $originalDate = $datanaixement;
        $newDate = date("Y-m-d", strtotime($originalDate));
                
         /*, 
                datanaixement = '".$newDate."'"'*/       
        $this->query =
            "
            UPDATE usuari SET              
                nom = '".$this->getNom()."',
                primercognom =  '".$this->getPrimercognom()."', 
                segoncognom =  '".$this->getSegoncognom()."', 
                datanaixement = '".$newDate."'
            WHERE mail = '".$this->getMail()."' 
            ";
        $this->execute_single_query();
    }
    
    public function updateFoto($mail , $rutaFoto) {
        $this->setImatgePerfil($rutaFoto);      
        $this->query =
            "
            UPDATE usuari SET
                imatgeperfil = '".$this->getImatgePerfil()."'              
            WHERE mail = '".$mail."' 
            ";
        $this->execute_single_query();
    }
    
    # Recopilar tots els events del usuari en el array "$events_usuari"
    public function getEventsUser($mailusuari) {
        $this->query =
            "
            SELECT *  FROM event
            WHERE mail = '".$mailusuari."'
            ";
        $this->get_results_from_query();
        if(count($this->rows) >= 1) {
            $i = 0;
            foreach ($this->rows as $key => $value) {
                $id = $value["id"];
                $mail = $value["mail"];
                $motiu = $value["motiu"];
                $titol = $value["titol"];
                $categoria = $value["categoria"];
                $datainici = $value["datainici"];
                $horainici = $value["horainici"];
                $horafi = $value["horafi"];
                
                $this->events_usuari[$i] = new Event_Model($id, $mail, $motiu, $titol, $categoria, $datainici, $horainici, $horafi, NULL);
                $i++;
            }
        }
        unset($this->rows);

        $this->query =
                "
                SELECT id, mailuser
                FROM event, invitats
                WHERE idevent = id
                AND mail = '".$mailusuari."'
                ORDER BY id
                ";
        $this->get_results_from_query();
        $i = 0 ;
        $x = 0;
        $ultimo_id = 0;
        $bandera = false;
        //for($i = 0; $i<$this->getNumberOfEvents(); $i++) {
            if(count($this->rows) >= 1) {
                //print count($this->rows);
                foreach ($this->rows as $key => $value) {
                    $id = $value["id"];
                    
                    if($bandera == false) $bandera = true;
                    else {
                        if($ultimo_id != $id) {
                            $i++;
                            $x = 0;
                        }
                    }
                    
                    $ultimo_id = $id;
                    $mailuser = $value["mailuser"];
                    
                    //print $id." / ".$mailuser."<br />";
                    $this->getEventUsuari($i)->invitatseventobjecte[$x] = new Invitat_Model($id, $mailuser);                    
                    $x++;
                }
            }
            //exit();
        //} 
        unset($this->rows);
    }
        
    public function getNumberOfEvents() {
        return count($this->events_usuari);
    }
    
    public function __destruct() {
        unset($this);
    }
    
}

?>